iT邦幫忙

2023 iThome 鐵人賽

DAY 9
1
Modern Web

什麼!在網頁上也可以寫遊戲?系列 第 9

[Day 09] 變數的型別與作用範圍

  • 分享至 

  • xImage
  •  

[Day 07] 事件表實作 - 檢查篇(下) 的時候,我有提到了變數的觀念,也就是變數做為一個容器,可以被賦予名字,並且可以在容器內放入一些數字、字串等,而且可以隨時把變數內的東西拿出來使用,或是修改。

但關於變數還有一些重要的部分我沒有介紹到,所以今天會來補充介紹關於變數的一些特性。

變數的型別

在事件表中,我們一般使用 儲存全域變數 來定義一個新的變數,而變數的值有四種型別,分別是 字串、整數、數字、布林值

  • 字串:就如同你現在正在看的文章一樣,可以理解成它就是一串字,任何字、符號,甚至數字都可以是字串,代表著一段文字。
  • 整數、數字:老實說這兩個我用起來是完全沒有差別,不知道是不是小哈當初開發時的失誤,總之它們所代表的意義是一個可以被運算的數值,不管它是整數還是小數,只要符合數字的定義,就可以被儲存在變數中,假設我選擇了這種型別的變數,卻在變數值裡面填了數字以外的東西,那這個時候事件表就會出現錯誤。
  • 布林值:這是一個只有兩個值的型別,分別是 truefalse,真、假的意思,電腦的世界是由 1 跟 0 所組成的,這兩個值也分別代表著 1 跟 0,所以如果選擇了布林值,就可以在變數值裡面填入這四種結果,系統最後都會把它轉換成 truefalse,你可能會問這個型別的意義在哪裡,其實在我們的檢查通過時,它所回傳用於判斷是否通過的結果,正是布林值,布林值通常用於在程式中作為邏輯判斷,除此之外,還有像是我們要定義某個東西是否是食物的時候,也可以這麼使用 apple.food = true,當然不只是定義是否為食物啦。

變數的作用範圍

在事件表中,變數分為兩種,一種叫做 全域變數,另一種則為 區域變數

  • 全域變數:當你定義了一個全域變數之後,不管在事件表中的任何角落,都可以讀取到這個變數的值,例如我在 event_0001 定義了一個變數 name = 酷可,我也可以在 event_0010 使用 {name} 來讀取裡面的 酷可 出來。
  • 區域變數:區域變數就是只有在同一個事件內作用的變數,例如我們在檢查篇中,利用檢查儲存下來的變數,還記得那些欄位名稱都有一個區域變數嗎?意思就是那些變數只能在該檢查作用的事件中取用,假設我在事件 event_0002 中利用檢查儲存了一個區域變數 instance = ai_1,我可以在同樣的事件裡使用 {instance} 來讀取變數,但如果我在事件 event_0003 中嘗試使用 {instance} 來讀取變數,最後系統只會讀到 undefined,也就是 未定義 的意思。

CG 範例事件表

今天比較輕鬆一點,因為變數最重要的觀念在前天都介紹過了,今天算是一個補充,不過我還是做了一個簡單的範例,主要是用來測試變數的作用範圍。

我總共新增了三個事件,第一個事件中我建立了一個全域變數 score = 60,並且新增了一個角色,還有彈出字串輸入視窗,讓玩家輸入名字。

第二個事件中我偵測當玩家確認視窗後,將輸入的內容儲存成區域變數 name,接著再藉由角色說話說出:「這位新來的 {name},你的分數只有 {score},看來該好好訓練一下了。」,並且等待說話結束後觸發第三個事件。

第三個事件設定為參考事件,而動作就是跟第二個事件一模一樣的角色說話,藉此來看看,在不同的事件中,同樣的動作,讀取同樣的變數會發生什麼事情。

總結

除了前天介紹的變數與容器的關係,今天對變數做了些更完整的補充,介紹了變數有 字串、整數、數字、布林值 這四種型別,以及變數的作用範圍分為 全域、區域 兩種,我個人認為變數的作用範圍相對的會比較複雜,因為之後你就會發現,其實有些檢查、動作,都具有傳輸區域變數到其他事件的功能,如果沒有規劃好,可能就會互相造成衝突,互相影響到彼此的區域變數,導致最後執行出來的結果出現問題,所以如果以後真的用到了相關的功能,這個部分就得多加注意了!

總覺得之前的介紹似乎都太過冗長,因為希望任何人都可以看懂,還有 CG 與許多人都是初次見面的關係,所以我花了很多精力在針對基礎進行補充,不過接下來應該會考慮再想辦法更精簡一點了。


上一篇
[Day 08] 事件表實作 - 觸發篇
下一篇
[Day 10] 成品實作 - 被追殺的天影武士(複習篇)
系列文
什麼!在網頁上也可以寫遊戲?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言